import 'dart:io';

import 'package:flutter/foundation.dart';

/// [Platform]方法的包装，解决在网页端运行时，由于直接使用Platform相关方法报错问题
abstract class PlatformEx {
  static bool get isAndroid {
    return !kIsWeb && Platform.isAndroid;
  }

  static bool get isIOS {
    return !kIsWeb && Platform.isIOS;
  }

  static bool get isWindows {
    return !kIsWeb && Platform.isWindows;
  }

  static bool get isMacOS {
    return !kIsWeb && Platform.isMacOS;
  }

  static bool get isLinux {
    return !kIsWeb && Platform.isLinux;
  }

  static bool get isFuchsia {
    return !kIsWeb && Platform.isFuchsia;
  }

  /// 是否是鸿蒙系统
  static bool get isOHOS {
    return !kIsWeb && Platform.operatingSystem == 'ohos';
  }

  static bool get isWbe {
    return kIsWeb;
  }

  static String get operatingSystem {
    if (kIsWeb) {
      return 'web';
    }
    return Platform.operatingSystem;
  }

  /// 不支持web，web端始终返回空串
  static String get operatingSystemVersion {
    if (kIsWeb) {
      return '';
    }
    return Platform.operatingSystemVersion;
  }

  /// 不支持web，web端始终返回空串
  static String get version {
    if (kIsWeb) {
      return '';
    }

    return Platform.version;
  }

  /// 不支持web，web端始终返回空map
  static Map<String, String> get environment {
    if (kIsWeb) {
      return {};
    }

    return Platform.environment;
  }

  /// 不支持web，web端始终返回空串
  static String get localeName {
    if (kIsWeb) {
      return '';
    }

    return Platform.localeName;
  }

  /// 不支持web，web端始终返回空串
  static String get localHostname {
    if (kIsWeb) {
      return '';
    }

    return Platform.localHostname;
  }

  static String get pathSeparator {
    if (kIsWeb) {
      return '/';
    }

    return Platform.pathSeparator;
  }

  /// 不支持web，web端始终返回空串
  static String get executable {
    if (kIsWeb) {
      return '';
    }

    return Platform.executable;
  }

  static String get lineTerminator {
    if (kIsWeb) {
      return '\n';
    }
    return Platform.lineTerminator;
  }

  /// 不支持web，web端始终返回空串
  static String get resolvedExecutable {
    if (kIsWeb) {
      return '';
    }
    return Platform.resolvedExecutable;
  }

  /// 不支持web，web端始终返回空列表
  static List<String> get executableArguments {
    if (kIsWeb) {
      return [];
    }
    return Platform.executableArguments;
  }

  /// 不支持web，web端始终返回0
  static int get numberOfProcessors {
    if (kIsWeb) {
      return 0;
    }
    return Platform.numberOfProcessors;
  }

  static String? get packageConfig {
    if (kIsWeb) {
      return null;
    }
    return Platform.packageConfig;
  }

  /// 不支持web，web端始终返回空Uri
  static Uri get script {
    if (kIsWeb) {
      return Uri();
    }
    return Platform.script;
  }
}
